Adaptive transform coding is a speech compression technique in which a speech signal is sampled and the samples are partitioned into blocks. Each block is transformed into a set of transform coefficient signals representative of amplitudes of frequency components of speech components in the block. The coefficient signals are quantized to form coded signals which are transmitted over a channel. At a receiver, the coded signals are decoded and inverse transformed to generate the block of speech samples.
In adaptive transform coding it is desirable to encode the transform coefficients efficiently by allocating each coefficient only enough bits to minimize a mean square distortion measure and, consequently, have a flat quantizing noise distribution in the frequency domain. Analysis has shown that the average distortion is minimized by equalizing the per coefficient distortion. Since the coefficient distortion is directly related to coefficient variance, a larger number of bits are typically allocated to coefficients of high variance and a smaller number of bits, if any, are allocated to coefficients of small variance.
Several attempts have been made towards efficiently allocating bits to the coefficients. One prior adaptive transform coding arrangement, including a bit allocation technique, is disclosed in U.S. Pat. No. 4,184,049 issued to R. E. Crochiere and J. M. N. S. Tribolet, on Jan. 15, 1980. Also, see an article entitled, "Frequency Domain Coding of Speech" by J. M. Tribolet and R. E. Crochiere, IEEE Transactions on Acoustics, Speech, and Signal Processing, Vol. ASSP-27, No. 5, Oct. 5, 1979. In this prior bit allocation technique, bits are initially allocated to the coefficients based on a theoretical solution. Thereafter, initial bit allocations, which are less than a minimum value, are set to "zero", and new bit allocations are computed for the coefficients. The new bit allocations which are greater than a maximum value are rounded down to a predetermined value. New bit allocations are again computed and, then, modified by adding or subtracting bits because of rounding off of the individual bit allocations. This process is iterated until the number of bits allocated to the coefficients equals a total number of bits available for the block.
One problem with this prior bit allocation technique is that negative bit allocations are possible. Consequently, the other coefficients have been allocated too many bits. This requires time-consuming iterations, as does the rounding technique. Moreover, realtime bit allocations using the prior arrangement would require a so-called array processor, for example, a programmable high-speed computer, which is undesirable because of its cost, size and complexity.